package com.hs.zookeeper.service;

import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.data.ACL;

import java.util.List;

/**
 * @Author: songhao
 * @Date: 2020/12/29
 * @Description: 节点相关的操作
 */
public interface ZnodeService {

    /**
     * 创建节点,默认的acl权限为world
     * @param path 例如节点/mysql
     * @param data 数据:localhost:3306
     * @param aclList 权限列表,可传空值
     * @param createMode 节点类型,有如下几种:
     *          PERSISTENT => 持久化节点
     *          PERSISTENT_SEQUENTIAL => 持久化有序节点
     *          EPHEMERAL => 临时节点
     *          EPHEMERAL_SEQUENTIAL => 临时有序节点
     */
    void createNode(String path, String data, List<ACL> aclList, CreateMode createMode);

    /**
     * 获取节点数据
     * @param path 例如节点/mysql
     * @return
     */
    String getNodeData(String path);

    /**
     * 获取某个路径的子节点
     * @param path
     * @return
     */
    List<String> getChildList(String path);

    /**
     * 删除节点及其子节点
     * @param path
     */
    void deleteNode(String path);

    /**
     * 修改znode
     * @param path 结点路径
     * @param data 结点数据
     * @return 修改结点成功   false表示结点不存在
     */
    void updateNode(String path, String data);
}
